java.lang.String
是字符串类型字符串一旦创建不可修改
提升字符串的访问效率:在程序中使用了“缓存”的技术,所以在 Java 中所有使用“双引号”括起来的字符串都会在“字符串常量池”中创建一份。字符串常量池在方法区中被存储
- 在程序执行过程中,如果程序用到某个字符串,例如“ABC”,那么程序会在字符串常量池中去搜索该字符串,如果没有找到则在字符串常量池中新建一个“ABC”字符串;如果找到就直接拿过来用。(字符串常量池是一个缓存区,为了提高访问字符串的效率)
分析以下程序创建字符串对象的区别:
String s1 = "abc";
只会在字符串常量池中创建一个“abc”字符串对象String s2 = new String("hello");
会在字符串常量池中创建一个“hello”字符串对象,并且会在堆中再创建一个字符串对象- 第二种方式比较浪费内存,常用的是第一种方式
使用 String 的时候我们应该注意的问题:尽量不要做字符串频繁的拼接操作。因为字符串一旦创建不可改变,只要频繁拼接,就会在字符串常量池中创建大量的字符串对象,给垃圾回收带来问题
- 推荐字符串频繁拼接使用 StringBuffer 或 StringBuilder